package com.ssy.lingxi.marketing.api.model.response;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 商品的活动详情
 *
 * 优惠阶梯:
 * 满量: Integer - BigDecimal
 * 满额: BigDecimal - BigDecimal
 * 换购满额换商品: BigDecimal - ActivityGoodsSubsidiaryDO
 * 换购买商品换商品: Integer - ActivityGoodsSubsidiaryDO
 * 赠送满额送商品: BigDecimal - List<GoodsSubsidiaryGroupDetail>
 * 赠送满额送优惠券: BigDecimal - List<GoodsCouponGroupDetail>
 * 赠送满量送商品: BigDecimal - List<GoodsSubsidiaryGroupDetail>
 * 赠送满量送优惠券: BigDecimal - List<GoodsCouponGroupDetail>
 *
 * @author yzc
 * @version 2.0.0
 * @date 2021/9/30
 */
public class GoodsActivityDetail implements Serializable {

    private static final long serialVersionUID = -4912341352362357086L;

    /**
     * 活动id
     */
    private Long activityId;

    /**
     * 所属类型 1-平台 2-商家
     */
    private Integer belongType;

    /**
     * 活动类型 1-特价促销 2-直降促销 3-折扣促销 4-满量促销 5-满额促销
     *         6-赠送促销 7-多件促销 8-组合促销 9-拼团 10-抽奖
     *         11-砍价 12-秒杀 13-换购 14-预售 15-套餐 16-试用
     */
    private Integer activityType;

    /**
     * 具体类型 1-满量减(满量促销),2-满量折(满量促销),3-满额减(满额促销),4-满额折(满额促销),5-满额赠商品(赠送促销),6-满额赠优惠卷(赠送促销) 7-满额换购(换购) 8-买商品换购(换购)
     * 9-买商品赠商品(赠送促销),10-买商品赠优惠卷(赠送促销)
     */
    private Integer concreteType;

    /**
     * 开始时间yyyy-MM-dd HH:mm:ss
     */
    private String startTime;

    /**
     * 结束时间yyyy-MM-dd HH:mm:ss
     */
    private String endTime;

    /**
     * 是否可用优惠券 0-否 1-是
     */
    private Integer canUseCoupon;

    /**
     * 个人限购数量
     */
    private Integer restrictNum;

    /**
     * 优惠标签
     */
    private String preferentialTag;

    /**
     * 优惠标签
     */
    private List<Object> preferentialTagDescs;

    /**
     * 优惠阶梯(满量, 满额, 赠品, 多件)
     * 满量折: 数量 - 折扣
     * 满量减: 数量 - 金额
     * 满额折: 金额 - 折扣
     * 满额减: 金额 - 金额
     * 换购满额换商品: 金额 - 附属商品
     * 换购买商品换商品: 金额 - 附属商品
     * 赠送满额送商品: 金额 - [附属商品]
     * 赠送满额送优惠券: 金额 - [附属商品]
     * 赠送满量送商品: 数量 - [附属商品]
     * 赠送满量送优惠券: 数量 - [附属商品]
     */
    private List<Map<Object, Object>> ladders;

    /**
     * 组合规则(组合)
     */
    private Combination combination;

    /**
     * 参与该活动的sku商品
     */
    private List<ActivityParticipateGoods> activityGoods;

    /**
     * 特殊信息（秒杀时段）
     */
    private Map<String,Object> specialMap;


    public static class Combination {

        /**
         * 优惠规则 - 数量
         * */
        private Integer num;

        /**
         * 优惠规则 - 金额
         * */
        private BigDecimal price;

        public Combination() {
        }

        public Combination(Integer num, BigDecimal price) {
            this.num = num;
            this.price = price;
        }

        public Integer getNum() {
            return num;
        }

        public void setNum(Integer num) {
            this.num = num;
        }

        public BigDecimal getPrice() {
            return price;
        }

        public void setPrice(BigDecimal price) {
            this.price = price;
        }
    }

    public Long getActivityId() {
        return activityId;
    }

    public void setActivityId(Long activityId) {
        this.activityId = activityId;
    }

    public Integer getBelongType() {
        return belongType;
    }

    public void setBelongType(Integer belongType) {
        this.belongType = belongType;
    }

    public Integer getActivityType() {
        return activityType;
    }

    public void setActivityType(Integer activityType) {
        this.activityType = activityType;
    }

    public Integer getConcreteType() {
        return concreteType;
    }

    public void setConcreteType(Integer concreteType) {
        this.concreteType = concreteType;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public Integer getCanUseCoupon() {
        return canUseCoupon;
    }

    public void setCanUseCoupon(Integer canUseCoupon) {
        this.canUseCoupon = canUseCoupon;
    }

    public Integer getRestrictNum() {
        return restrictNum;
    }

    public void setRestrictNum(Integer restrictNum) {
        this.restrictNum = restrictNum;
    }

    public String getPreferentialTag() {
        return preferentialTag;
    }

    public void setPreferentialTag(String preferentialTag) {
        this.preferentialTag = preferentialTag;
    }

    public List<Object> getPreferentialTagDescs() {
        return preferentialTagDescs;
    }

    public void setPreferentialTagDescs(List<Object> preferentialTagDescs) {
        this.preferentialTagDescs = preferentialTagDescs;
    }

    public List<Map<Object, Object>> getLadders() {
        return ladders;
    }

    public void setLadders(List<Map<Object, Object>> ladders) {
        this.ladders = ladders;
    }

    public Combination getCombination() {
        return combination;
    }

    public void setCombination(Combination combination) {
        this.combination = combination;
    }

    public List<ActivityParticipateGoods> getActivityGoods() {
        return activityGoods;
    }

    public void setActivityGoods(List<ActivityParticipateGoods> activityGoods) {
        this.activityGoods = activityGoods;
    }

    public Map<String, Object> getSpecialMap() {
        return specialMap;
    }

    public void setSpecialMap(Map<String, Object> specialMap) {
        this.specialMap = specialMap;
    }
}